﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WinSPen.Objects
{
    public abstract class WSPObject
    {
        private int _localObjectID = -1;
        private int _networkObjectID = -1;

        private Layer _layer;

        /// <summary>
        /// 새로운 WSPObject를 생성한다.
        /// </summary>
        /// <param name="layer">이 WSPObject가 소속된 Layer</param>
        public WSPObject(Layer layer)
        {
            switch (layer)
            {
                case Layer.Local:
                    this._localObjectID = ObjectIDProvider.GetInstance().GetNewLocalObjectID();
                    this._layer = Layer.Local;
                    break;
                case Layer.Network:
                    this._networkObjectID = ObjectIDProvider.GetInstance().GetNewNetworkObjectID();
                    this._layer = Layer.Network;
                    break;
                default:
                    break;
            }
        }

        /// <summary>
        /// Local object의 Object ID를 반환한다.
        /// 이 object가 local object 가 아니라면 -1을 반환한다.
        /// </summary>
        /// <returns>Object ID</returns>
        internal int GetLocalObjectID()
        {
            return this._localObjectID;
        }

        /// <summary>
        /// Network object의 Object ID를 반환한다.
        /// 이 object가 network objecr 가 아니라면 -1을 반환한다.
        /// </summary>
        /// <returns>Object ID</returns>
        internal int GetNetworkObjectID()
        {
            return this._networkObjectID;
        }

        /// <summary>
        /// 이 WSPObject가 속한 Layer를 반환한다.
        /// </summary>
        /// <returns></returns>
        internal Layer GetMyLayer()
        {
            return this._layer;
        }
    }
}
